package teacher.stu.system.dao.impl;

import teacher.stu.system.dao.StudentDao;
import teacher.stu.system.domain.Student;

import java.util.ArrayList;

/*
    持久层操作数组
        1. 准备一个数组
        2. 数组中初始化几条数据
        3. 提供一套操作数组的功能
 */
public class StudentDaoImpl implements StudentDao {
    //  1. 准备一个数组
    public static final ArrayList<Student> STU_LIST = new ArrayList<Student>();
    //  2. 数组中初始化几条数据
    static {
        STU_LIST.add(new Student("001","彩金熊",19,"2000-10-24"));
        STU_LIST.add(new Student("002","胡培元",45,"1987-1-2"));
        STU_LIST.add(new Student("003","眼福套",30,"1994-6-6"));
    }

    /**
     * 添加学生到集合
     * @param student
     * @return
     */
    @Override
    public boolean add(Student student) {
        boolean add = STU_LIST.add(student);
        return add;
    }

    /**
     * 根据学生编号删除学生
     * @param id  学生编号
     * @return
     */
    @Override
    public boolean delete(String id) {
        // 1. 找到指定id的学生在集合中的位置
        int stuIndex= findById(id);
        // 2. 判断
        if(stuIndex == -1){
            return false;
        }
        // 3. 将集合中stuIndex位置的学生对象删除
        STU_LIST.remove(stuIndex);
        return  true;
    }

    @Override
    public boolean update(Student student) {
        // 1. 找到指定的student.id 在集合中的学生对应的索引
        int stuIndex = findById(student.getSid());
        if(stuIndex == -1){
            System.out.println("您要修改的学生不存在！");
            return false;
        }
        // 2. 将集合中stuIndex位置的学生替换为 student
        STU_LIST.set(stuIndex, student);
        System.out.println("修改学生成功！");
        return true;
    }

    @Override
    public void findAll() {
        if(STU_LIST.size() == 0){
            System.out.println("请先添加学生再查询！");
            return;
        }
        //有学生，先输出表头
        System.out.println("编号\t姓名\t年龄\t生日");
        for (Student student : STU_LIST) {
            System.out.println(""+student.getSid()+"\t"+student.getName()+"\t"+student.getAge()+"\t"+student.getBirthday()+"");
        }
    }

    /**
     * 查询指定id的学生在集合中的索引
     * @param id  指定id
     * @return
     */
    @Override
    public int findById(String id) {
        // 定义 指定id的学生在集合中假设不存在
        int index = -1;
        // 1. 遍历集合
        for (int i = 0; i < STU_LIST.size(); i++) {
            // 2. 获取集合中每一个学生对象
            Student student = STU_LIST.get(i); // arr[i]
            // 3. 判断student的id是否和 传过来的id相同
            if(student.getSid().equals(id)){
                index = i;
                break;
            }
        }

        return index;
    }
}
